<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.12"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Os1: /home/alejandro/Desarrollo eclipse/os1/Thirdparty/g2o/g2o/core/solver.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Os1
   &#160;<span id="projectnumber">1</span>
   </div>
   <div id="projectbrief">OrbSlam2 documentado y modificado</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.12 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,'Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('solver_8h_source.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">solver.h</div>  </div>
</div><!--header-->
<div class="contents">
<a href="solver_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// g2o - General Graph Optimization</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">// Copyright (C) 2011 R. Kuemmerle, G. Grisetti, W. Burgard</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// All rights reserved.</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">// Redistribution and use in source and binary forms, with or without</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment">// modification, are permitted provided that the following conditions are</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">// met:</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">// * Redistributions of source code must retain the above copyright notice,</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">//   this list of conditions and the following disclaimer.</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">// * Redistributions in binary form must reproduce the above copyright</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment">//   notice, this list of conditions and the following disclaimer in the</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment">//   documentation and/or other materials provided with the distribution.</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment">// IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment">// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment">// PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="comment">// HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="comment">// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="comment">// TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="comment">// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="comment">// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="comment">// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="comment">// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#ifndef G2O_SOLVER_H</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#define G2O_SOLVER_H</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="hyper__graph_8h.html">hyper_graph.h</a>&quot;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="batch__stats_8h.html">batch_stats.h</a>&quot;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="sparse__block__matrix_8h.html">sparse_block_matrix.h</a>&quot;</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &lt;cstddef&gt;</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceg2o.html">g2o</a> {</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;  <span class="keyword">class </span>SparseOptimizer;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="classg2o_1_1_solver.html">   43</a></span>&#160;  <span class="keyword">class  </span><a class="code" href="classg2o_1_1_solver.html">Solver</a></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;  {</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;    <span class="keyword">public</span>:</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;      <a class="code" href="classg2o_1_1_solver.html#af097bdf5c8dc4bb017a2cec4038d5a56">Solver</a>();</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;      <span class="keyword">virtual</span> <a class="code" href="classg2o_1_1_solver.html#a3b4a7c818ea0904772bc8bea6f1bbe86">~Solver</a>();</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;    <span class="keyword">public</span>:</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;      <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classg2o_1_1_solver.html#a532174e1ee53642880d2d59c128b037b">init</a>(<a class="code" href="classg2o_1_1_sparse_optimizer.html">SparseOptimizer</a>* <a class="code" href="classg2o_1_1_solver.html#a266bc31d289e824de6166522579ed385">optimizer</a>, <span class="keywordtype">bool</span> online = <span class="keyword">false</span>) = 0;</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;      <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classg2o_1_1_solver.html#a6c93ac0f528ffe05867d33150c54f46f">buildStructure</a>(<span class="keywordtype">bool</span> zeroBlocks = <span class="keyword">false</span>) = 0;</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;      <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classg2o_1_1_solver.html#aeca71878e37081b6138f90ac60ec1f89">updateStructure</a>(<span class="keyword">const</span> std::vector&lt;HyperGraph::Vertex*&gt;&amp; vset, <span class="keyword">const</span> <a class="code" href="classg2o_1_1_hyper_graph.html#a5e2970e236c0dcb4eff7c205d7b6b4ae">HyperGraph::EdgeSet</a>&amp; edges) = 0;</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;      <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classg2o_1_1_solver.html#ac1565e85d5ca68a87ad7f06f8164a8c0">buildSystem</a>() = 0;</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;      <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classg2o_1_1_solver.html#a9c359a886db57f2f81e54a2113f3bd38">solve</a>() = 0;</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;      <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classg2o_1_1_solver.html#afc33768e6c024e11d9e3c9d938b59b7f">computeMarginals</a>(<a class="code" href="classg2o_1_1_sparse_block_matrix.html">SparseBlockMatrix&lt;MatrixXd&gt;</a>&amp; spinv, <span class="keyword">const</span> std::vector&lt;std::pair&lt;int, int&gt; &gt;&amp; blockIndices) = 0;</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;      <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classg2o_1_1_solver.html#a94a0d5196c7859c6c37fc2368ac56be3">setLambda</a>(<span class="keywordtype">double</span> lambda, <span class="keywordtype">bool</span> backup = <span class="keyword">false</span>) = 0;</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;      <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classg2o_1_1_solver.html#a3c40dae9b999c4d18e57b02fd0e0ade2">restoreDiagonal</a>() = 0;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classg2o_1_1_solver.html#acb097d8568624a1f3af4dba808e5593b">   95</a></span>&#160;      <span class="keywordtype">double</span>* <a class="code" href="classg2o_1_1_solver.html#acb097d8568624a1f3af4dba808e5593b">x</a>() { <span class="keywordflow">return</span> <a class="code" href="classg2o_1_1_solver.html#a94ee5e303a754f4ff338a7b032c214ae">_x</a>;}</div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="classg2o_1_1_solver.html#ad3c537aa5890e1694766c8aee46912a0">   96</a></span>&#160;      <span class="keyword">const</span> <span class="keywordtype">double</span>* <a class="code" href="classg2o_1_1_solver.html#ad3c537aa5890e1694766c8aee46912a0">x</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classg2o_1_1_solver.html#a94ee5e303a754f4ff338a7b032c214ae">_x</a>;}</div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="classg2o_1_1_solver.html#a3212ad9d80f8f5ad15b72c2b55000095">   98</a></span>&#160;      <span class="keywordtype">double</span>* <a class="code" href="classg2o_1_1_solver.html#a3212ad9d80f8f5ad15b72c2b55000095">b</a>() { <span class="keywordflow">return</span> <a class="code" href="classg2o_1_1_solver.html#a52c92c9bf5db0da3322da3a02dbeb245">_b</a>;}</div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classg2o_1_1_solver.html#a812d5cad59fed145c3f47bcf99419a97">   99</a></span>&#160;      <span class="keyword">const</span> <span class="keywordtype">double</span>* <a class="code" href="classg2o_1_1_solver.html#a812d5cad59fed145c3f47bcf99419a97">b</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classg2o_1_1_solver.html#a52c92c9bf5db0da3322da3a02dbeb245">_b</a>;}</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="classg2o_1_1_solver.html#a7a5907ca706eef77acce4ab534857c96">  102</a></span>&#160;      <span class="keywordtype">size_t</span> <a class="code" href="classg2o_1_1_solver.html#a7a5907ca706eef77acce4ab534857c96">vectorSize</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classg2o_1_1_solver.html#abcf7731347f14915bd9ba963021ea830">_xSize</a>;}</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="classg2o_1_1_solver.html#a266bc31d289e824de6166522579ed385">  105</a></span>&#160;      <a class="code" href="classg2o_1_1_sparse_optimizer.html">SparseOptimizer</a>* <a class="code" href="classg2o_1_1_solver.html#a266bc31d289e824de6166522579ed385">optimizer</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classg2o_1_1_solver.html#aff3275985d996329df15070348c21292">_optimizer</a>;}</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;      <span class="keywordtype">void</span> <a class="code" href="classg2o_1_1_solver.html#af27b647cdc19d99ea5378b443e118bb0">setOptimizer</a>(<a class="code" href="classg2o_1_1_sparse_optimizer.html">SparseOptimizer</a>* optimizer);</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="classg2o_1_1_solver.html#ab472c69fa089382242a75be76e8f883e">  109</a></span>&#160;      <span class="keywordtype">bool</span> <a class="code" href="classg2o_1_1_solver.html#ab472c69fa089382242a75be76e8f883e">levenberg</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classg2o_1_1_solver.html#a8b7f6d4e00e3734f5ed9bd3dfac201a6">_isLevenberg</a>;}</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;      <span class="keywordtype">void</span> <a class="code" href="classg2o_1_1_solver.html#a01e21c08d7ec8c8051de565b5c314fa1">setLevenberg</a>(<span class="keywordtype">bool</span> <a class="code" href="classg2o_1_1_solver.html#ab472c69fa089382242a75be76e8f883e">levenberg</a>);</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="classg2o_1_1_solver.html#a36c68f7bc0b8864ee7722bc3c06de554">  116</a></span>&#160;      <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classg2o_1_1_solver.html#a36c68f7bc0b8864ee7722bc3c06de554">supportsSchur</a>() {<span class="keywordflow">return</span> <span class="keyword">false</span>;}</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;      <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classg2o_1_1_solver.html#acc8d6a8ae7847a157d4a2f44aea14c74">schur</a>()=0;</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;      <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classg2o_1_1_solver.html#a30134c828054375b1cc16ede2a879761">setSchur</a>(<span class="keywordtype">bool</span> s)=0;</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="classg2o_1_1_solver.html#ac32a7e75275f6595a66d948a0fc2984a">  122</a></span>&#160;      <span class="keywordtype">size_t</span> <a class="code" href="classg2o_1_1_solver.html#ac32a7e75275f6595a66d948a0fc2984a">additionalVectorSpace</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classg2o_1_1_solver.html#a6a1492959487c279747a8f3097a5f04e">_additionalVectorSpace</a>;}</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;      <span class="keywordtype">void</span> <a class="code" href="classg2o_1_1_solver.html#ad35b33cee11586c8adea12cd6949f74a">setAdditionalVectorSpace</a>(<span class="keywordtype">size_t</span> s);</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;      <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classg2o_1_1_solver.html#ad3ef2a487d991363ba86af2840b0d7cd">setWriteDebug</a>(<span class="keywordtype">bool</span>) = 0;</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;      <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classg2o_1_1_solver.html#a0f6f14940eccea0f9bf9e2ea144c9b4d">writeDebug</a>() <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;      <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classg2o_1_1_solver.html#a14852543c4dc3f3e7088efe03aa135eb">saveHessian</a>(<span class="keyword">const</span> std::string&amp; <span class="comment">/*fileName*/</span>) <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;    <span class="keyword">protected</span>:</div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classg2o_1_1_solver.html#aff3275985d996329df15070348c21292">  135</a></span>&#160;      <a class="code" href="classg2o_1_1_sparse_optimizer.html">SparseOptimizer</a>* <a class="code" href="classg2o_1_1_solver.html#aff3275985d996329df15070348c21292">_optimizer</a>;</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="classg2o_1_1_solver.html#a94ee5e303a754f4ff338a7b032c214ae">  136</a></span>&#160;      <span class="keywordtype">double</span>* <a class="code" href="classg2o_1_1_solver.html#a94ee5e303a754f4ff338a7b032c214ae">_x</a>;</div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="classg2o_1_1_solver.html#a52c92c9bf5db0da3322da3a02dbeb245">  137</a></span>&#160;      <span class="keywordtype">double</span>* <a class="code" href="classg2o_1_1_solver.html#a52c92c9bf5db0da3322da3a02dbeb245">_b</a>;</div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="classg2o_1_1_solver.html#abcf7731347f14915bd9ba963021ea830">  138</a></span>&#160;      <span class="keywordtype">size_t</span> <a class="code" href="classg2o_1_1_solver.html#abcf7731347f14915bd9ba963021ea830">_xSize</a>, <a class="code" href="classg2o_1_1_solver.html#a263003f9053537f92d5d019ce5c53771">_maxXSize</a>;</div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="classg2o_1_1_solver.html#a8b7f6d4e00e3734f5ed9bd3dfac201a6">  139</a></span>&#160;      <span class="keywordtype">bool</span> <a class="code" href="classg2o_1_1_solver.html#a8b7f6d4e00e3734f5ed9bd3dfac201a6">_isLevenberg</a>; </div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="classg2o_1_1_solver.html#a6a1492959487c279747a8f3097a5f04e">  140</a></span>&#160;      <span class="keywordtype">size_t</span> <a class="code" href="classg2o_1_1_solver.html#a6a1492959487c279747a8f3097a5f04e">_additionalVectorSpace</a>;</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;      <span class="keywordtype">void</span> <a class="code" href="classg2o_1_1_solver.html#ad1f85839e85f3e2c49112fb7e2b843ad">resizeVector</a>(<span class="keywordtype">size_t</span> sx);</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;    <span class="keyword">private</span>:</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;      <span class="comment">// Disable the copy constructor and assignment operator</span></div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="classg2o_1_1_solver.html#a040c384f90e39504853a29648a71bc25">  146</a></span>&#160;      <a class="code" href="classg2o_1_1_solver.html#a040c384f90e39504853a29648a71bc25">Solver</a>(<span class="keyword">const</span> <a class="code" href="classg2o_1_1_solver.html">Solver</a>&amp;) { }</div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="classg2o_1_1_solver.html#a19a6b5b126e7bef1c99dff89567f2eff">  147</a></span>&#160;      <a class="code" href="classg2o_1_1_solver.html">Solver</a>&amp; <a class="code" href="classg2o_1_1_solver.html#a19a6b5b126e7bef1c99dff89567f2eff">operator= </a>(<span class="keyword">const</span> <a class="code" href="classg2o_1_1_solver.html">Solver</a>&amp;) { <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;  };</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;} <span class="comment">// end namespace</span></div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;<span class="preprocessor">#endif</span></div><div class="ttc" id="classg2o_1_1_solver_html_a3212ad9d80f8f5ad15b72c2b55000095"><div class="ttname"><a href="classg2o_1_1_solver.html#a3212ad9d80f8f5ad15b72c2b55000095">g2o::Solver::b</a></div><div class="ttdeci">double * b()</div><div class="ttdoc">return b, the right hand side of the system </div><div class="ttdef"><b>Definition:</b> solver.h:98</div></div>
<div class="ttc" id="classg2o_1_1_solver_html_a266bc31d289e824de6166522579ed385"><div class="ttname"><a href="classg2o_1_1_solver.html#a266bc31d289e824de6166522579ed385">g2o::Solver::optimizer</a></div><div class="ttdeci">SparseOptimizer * optimizer() const</div><div class="ttdoc">the optimizer (graph) on which the solver works </div><div class="ttdef"><b>Definition:</b> solver.h:105</div></div>
<div class="ttc" id="batch__stats_8h_html"><div class="ttname"><a href="batch__stats_8h.html">batch_stats.h</a></div></div>
<div class="ttc" id="classg2o_1_1_solver_html_ad35b33cee11586c8adea12cd6949f74a"><div class="ttname"><a href="classg2o_1_1_solver.html#ad35b33cee11586c8adea12cd6949f74a">g2o::Solver::setAdditionalVectorSpace</a></div><div class="ttdeci">void setAdditionalVectorSpace(size_t s)</div><div class="ttdef"><b>Definition:</b> solver.cpp:82</div></div>
<div class="ttc" id="classg2o_1_1_solver_html_aff3275985d996329df15070348c21292"><div class="ttname"><a href="classg2o_1_1_solver.html#aff3275985d996329df15070348c21292">g2o::Solver::_optimizer</a></div><div class="ttdeci">SparseOptimizer * _optimizer</div><div class="ttdef"><b>Definition:</b> solver.h:135</div></div>
<div class="ttc" id="classg2o_1_1_solver_html_a3c40dae9b999c4d18e57b02fd0e0ade2"><div class="ttname"><a href="classg2o_1_1_solver.html#a3c40dae9b999c4d18e57b02fd0e0ade2">g2o::Solver::restoreDiagonal</a></div><div class="ttdeci">virtual void restoreDiagonal()=0</div><div class="ttdoc">restore a previosly made backup of the diagonal </div></div>
<div class="ttc" id="hyper__graph_8h_html"><div class="ttname"><a href="hyper__graph_8h.html">hyper_graph.h</a></div></div>
<div class="ttc" id="classg2o_1_1_solver_html_a3b4a7c818ea0904772bc8bea6f1bbe86"><div class="ttname"><a href="classg2o_1_1_solver.html#a3b4a7c818ea0904772bc8bea6f1bbe86">g2o::Solver::~Solver</a></div><div class="ttdeci">virtual ~Solver()</div><div class="ttdef"><b>Definition:</b> solver.cpp:40</div></div>
<div class="ttc" id="classg2o_1_1_solver_html_a0f6f14940eccea0f9bf9e2ea144c9b4d"><div class="ttname"><a href="classg2o_1_1_solver.html#a0f6f14940eccea0f9bf9e2ea144c9b4d">g2o::Solver::writeDebug</a></div><div class="ttdeci">virtual bool writeDebug() const =0</div></div>
<div class="ttc" id="classg2o_1_1_sparse_optimizer_html"><div class="ttname"><a href="classg2o_1_1_sparse_optimizer.html">g2o::SparseOptimizer</a></div><div class="ttdef"><b>Definition:</b> sparse_optimizer.h:45</div></div>
<div class="ttc" id="classg2o_1_1_solver_html_a36c68f7bc0b8864ee7722bc3c06de554"><div class="ttname"><a href="classg2o_1_1_solver.html#a36c68f7bc0b8864ee7722bc3c06de554">g2o::Solver::supportsSchur</a></div><div class="ttdeci">virtual bool supportsSchur()</div><div class="ttdoc">does this solver support the Schur complement for solving a system consisting of poses and landmarks...</div><div class="ttdef"><b>Definition:</b> solver.h:116</div></div>
<div class="ttc" id="classg2o_1_1_solver_html_a19a6b5b126e7bef1c99dff89567f2eff"><div class="ttname"><a href="classg2o_1_1_solver.html#a19a6b5b126e7bef1c99dff89567f2eff">g2o::Solver::operator=</a></div><div class="ttdeci">Solver &amp; operator=(const Solver &amp;)</div><div class="ttdef"><b>Definition:</b> solver.h:147</div></div>
<div class="ttc" id="classg2o_1_1_solver_html_af097bdf5c8dc4bb017a2cec4038d5a56"><div class="ttname"><a href="classg2o_1_1_solver.html#af097bdf5c8dc4bb017a2cec4038d5a56">g2o::Solver::Solver</a></div><div class="ttdeci">Solver()</div><div class="ttdef"><b>Definition:</b> solver.cpp:34</div></div>
<div class="ttc" id="classg2o_1_1_solver_html_ad3c537aa5890e1694766c8aee46912a0"><div class="ttname"><a href="classg2o_1_1_solver.html#ad3c537aa5890e1694766c8aee46912a0">g2o::Solver::x</a></div><div class="ttdeci">const double * x() const</div><div class="ttdef"><b>Definition:</b> solver.h:96</div></div>
<div class="ttc" id="classg2o_1_1_solver_html_af27b647cdc19d99ea5378b443e118bb0"><div class="ttname"><a href="classg2o_1_1_solver.html#af27b647cdc19d99ea5378b443e118bb0">g2o::Solver::setOptimizer</a></div><div class="ttdeci">void setOptimizer(SparseOptimizer *optimizer)</div><div class="ttdef"><b>Definition:</b> solver.cpp:72</div></div>
<div class="ttc" id="classg2o_1_1_solver_html_a6a1492959487c279747a8f3097a5f04e"><div class="ttname"><a href="classg2o_1_1_solver.html#a6a1492959487c279747a8f3097a5f04e">g2o::Solver::_additionalVectorSpace</a></div><div class="ttdeci">size_t _additionalVectorSpace</div><div class="ttdef"><b>Definition:</b> solver.h:140</div></div>
<div class="ttc" id="classg2o_1_1_solver_html_ac1565e85d5ca68a87ad7f06f8164a8c0"><div class="ttname"><a href="classg2o_1_1_solver.html#ac1565e85d5ca68a87ad7f06f8164a8c0">g2o::Solver::buildSystem</a></div><div class="ttdeci">virtual bool buildSystem()=0</div><div class="ttdoc">build the current system </div></div>
<div class="ttc" id="classg2o_1_1_solver_html_acc8d6a8ae7847a157d4a2f44aea14c74"><div class="ttname"><a href="classg2o_1_1_solver.html#acc8d6a8ae7847a157d4a2f44aea14c74">g2o::Solver::schur</a></div><div class="ttdeci">virtual bool schur()=0</div><div class="ttdoc">should the solver perform the schur complement or not </div></div>
<div class="ttc" id="classg2o_1_1_solver_html_a94a0d5196c7859c6c37fc2368ac56be3"><div class="ttname"><a href="classg2o_1_1_solver.html#a94a0d5196c7859c6c37fc2368ac56be3">g2o::Solver::setLambda</a></div><div class="ttdeci">virtual bool setLambda(double lambda, bool backup=false)=0</div><div class="ttdoc">update the system while performing Levenberg, i.e., modifying the diagonal components of A by doing +...</div></div>
<div class="ttc" id="classg2o_1_1_solver_html_ac32a7e75275f6595a66d948a0fc2984a"><div class="ttname"><a href="classg2o_1_1_solver.html#ac32a7e75275f6595a66d948a0fc2984a">g2o::Solver::additionalVectorSpace</a></div><div class="ttdeci">size_t additionalVectorSpace() const</div><div class="ttdef"><b>Definition:</b> solver.h:122</div></div>
<div class="ttc" id="classg2o_1_1_solver_html_a040c384f90e39504853a29648a71bc25"><div class="ttname"><a href="classg2o_1_1_solver.html#a040c384f90e39504853a29648a71bc25">g2o::Solver::Solver</a></div><div class="ttdeci">Solver(const Solver &amp;)</div><div class="ttdef"><b>Definition:</b> solver.h:146</div></div>
<div class="ttc" id="classg2o_1_1_solver_html_a532174e1ee53642880d2d59c128b037b"><div class="ttname"><a href="classg2o_1_1_solver.html#a532174e1ee53642880d2d59c128b037b">g2o::Solver::init</a></div><div class="ttdeci">virtual bool init(SparseOptimizer *optimizer, bool online=false)=0</div><div class="ttdoc">initialize the solver, called once before the first iteration </div></div>
<div class="ttc" id="classg2o_1_1_solver_html_a7a5907ca706eef77acce4ab534857c96"><div class="ttname"><a href="classg2o_1_1_solver.html#a7a5907ca706eef77acce4ab534857c96">g2o::Solver::vectorSize</a></div><div class="ttdeci">size_t vectorSize() const</div><div class="ttdoc">return the size of the solution vector (x) and b </div><div class="ttdef"><b>Definition:</b> solver.h:102</div></div>
<div class="ttc" id="classg2o_1_1_solver_html"><div class="ttname"><a href="classg2o_1_1_solver.html">g2o::Solver</a></div><div class="ttdoc">Generic interface for a sparse solver operating on a graph which solves one iteration of the lineariz...</div><div class="ttdef"><b>Definition:</b> solver.h:43</div></div>
<div class="ttc" id="classg2o_1_1_solver_html_a9c359a886db57f2f81e54a2113f3bd38"><div class="ttname"><a href="classg2o_1_1_solver.html#a9c359a886db57f2f81e54a2113f3bd38">g2o::Solver::solve</a></div><div class="ttdeci">virtual bool solve()=0</div><div class="ttdoc">solve Ax = b </div></div>
<div class="ttc" id="classg2o_1_1_solver_html_ad3ef2a487d991363ba86af2840b0d7cd"><div class="ttname"><a href="classg2o_1_1_solver.html#ad3ef2a487d991363ba86af2840b0d7cd">g2o::Solver::setWriteDebug</a></div><div class="ttdeci">virtual void setWriteDebug(bool)=0</div><div class="ttdoc">write debug output of the Hessian if system is not positive definite </div></div>
<div class="ttc" id="namespaceg2o_html"><div class="ttname"><a href="namespaceg2o.html">g2o</a></div><div class="ttdef"><b>Definition:</b> base_binary_edge.h:37</div></div>
<div class="ttc" id="sparse__block__matrix_8h_html"><div class="ttname"><a href="sparse__block__matrix_8h.html">sparse_block_matrix.h</a></div></div>
<div class="ttc" id="classg2o_1_1_solver_html_aeca71878e37081b6138f90ac60ec1f89"><div class="ttname"><a href="classg2o_1_1_solver.html#aeca71878e37081b6138f90ac60ec1f89">g2o::Solver::updateStructure</a></div><div class="ttdeci">virtual bool updateStructure(const std::vector&lt; HyperGraph::Vertex *&gt; &amp;vset, const HyperGraph::EdgeSet &amp;edges)=0</div><div class="ttdoc">update the structures for online processing </div></div>
<div class="ttc" id="classg2o_1_1_solver_html_acb097d8568624a1f3af4dba808e5593b"><div class="ttname"><a href="classg2o_1_1_solver.html#acb097d8568624a1f3af4dba808e5593b">g2o::Solver::x</a></div><div class="ttdeci">double * x()</div><div class="ttdoc">return x, the solution vector </div><div class="ttdef"><b>Definition:</b> solver.h:95</div></div>
<div class="ttc" id="classg2o_1_1_solver_html_ad1f85839e85f3e2c49112fb7e2b843ad"><div class="ttname"><a href="classg2o_1_1_solver.html#ad1f85839e85f3e2c49112fb7e2b843ad">g2o::Solver::resizeVector</a></div><div class="ttdeci">void resizeVector(size_t sx)</div><div class="ttdef"><b>Definition:</b> solver.cpp:46</div></div>
<div class="ttc" id="classg2o_1_1_sparse_block_matrix_html"><div class="ttname"><a href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a></div><div class="ttdoc">Sparse matrix which uses blocks. </div><div class="ttdef"><b>Definition:</b> sparse_block_matrix.h:62</div></div>
<div class="ttc" id="classg2o_1_1_solver_html_a8b7f6d4e00e3734f5ed9bd3dfac201a6"><div class="ttname"><a href="classg2o_1_1_solver.html#a8b7f6d4e00e3734f5ed9bd3dfac201a6">g2o::Solver::_isLevenberg</a></div><div class="ttdeci">bool _isLevenberg</div><div class="ttdoc">the system we gonna solve is a Levenberg-Marquardt system </div><div class="ttdef"><b>Definition:</b> solver.h:139</div></div>
<div class="ttc" id="classg2o_1_1_solver_html_a01e21c08d7ec8c8051de565b5c314fa1"><div class="ttname"><a href="classg2o_1_1_solver.html#a01e21c08d7ec8c8051de565b5c314fa1">g2o::Solver::setLevenberg</a></div><div class="ttdeci">void setLevenberg(bool levenberg)</div><div class="ttdef"><b>Definition:</b> solver.cpp:77</div></div>
<div class="ttc" id="classg2o_1_1_solver_html_abcf7731347f14915bd9ba963021ea830"><div class="ttname"><a href="classg2o_1_1_solver.html#abcf7731347f14915bd9ba963021ea830">g2o::Solver::_xSize</a></div><div class="ttdeci">size_t _xSize</div><div class="ttdef"><b>Definition:</b> solver.h:138</div></div>
<div class="ttc" id="classg2o_1_1_solver_html_a94ee5e303a754f4ff338a7b032c214ae"><div class="ttname"><a href="classg2o_1_1_solver.html#a94ee5e303a754f4ff338a7b032c214ae">g2o::Solver::_x</a></div><div class="ttdeci">double * _x</div><div class="ttdef"><b>Definition:</b> solver.h:136</div></div>
<div class="ttc" id="classg2o_1_1_solver_html_a14852543c4dc3f3e7088efe03aa135eb"><div class="ttname"><a href="classg2o_1_1_solver.html#a14852543c4dc3f3e7088efe03aa135eb">g2o::Solver::saveHessian</a></div><div class="ttdeci">virtual bool saveHessian(const std::string &amp;) const =0</div><div class="ttdoc">write the hessian to disk using the specified file name </div></div>
<div class="ttc" id="classg2o_1_1_solver_html_a812d5cad59fed145c3f47bcf99419a97"><div class="ttname"><a href="classg2o_1_1_solver.html#a812d5cad59fed145c3f47bcf99419a97">g2o::Solver::b</a></div><div class="ttdeci">const double * b() const</div><div class="ttdef"><b>Definition:</b> solver.h:99</div></div>
<div class="ttc" id="classg2o_1_1_hyper_graph_html_a5e2970e236c0dcb4eff7c205d7b6b4ae"><div class="ttname"><a href="classg2o_1_1_hyper_graph.html#a5e2970e236c0dcb4eff7c205d7b6b4ae">g2o::HyperGraph::EdgeSet</a></div><div class="ttdeci">std::set&lt; Edge * &gt; EdgeSet</div><div class="ttdef"><b>Definition:</b> hyper_graph.h:90</div></div>
<div class="ttc" id="classg2o_1_1_solver_html_a52c92c9bf5db0da3322da3a02dbeb245"><div class="ttname"><a href="classg2o_1_1_solver.html#a52c92c9bf5db0da3322da3a02dbeb245">g2o::Solver::_b</a></div><div class="ttdeci">double * _b</div><div class="ttdef"><b>Definition:</b> solver.h:137</div></div>
<div class="ttc" id="classg2o_1_1_solver_html_a30134c828054375b1cc16ede2a879761"><div class="ttname"><a href="classg2o_1_1_solver.html#a30134c828054375b1cc16ede2a879761">g2o::Solver::setSchur</a></div><div class="ttdeci">virtual void setSchur(bool s)=0</div></div>
<div class="ttc" id="classg2o_1_1_solver_html_a263003f9053537f92d5d019ce5c53771"><div class="ttname"><a href="classg2o_1_1_solver.html#a263003f9053537f92d5d019ce5c53771">g2o::Solver::_maxXSize</a></div><div class="ttdeci">size_t _maxXSize</div><div class="ttdef"><b>Definition:</b> solver.h:138</div></div>
<div class="ttc" id="classg2o_1_1_solver_html_a6c93ac0f528ffe05867d33150c54f46f"><div class="ttname"><a href="classg2o_1_1_solver.html#a6c93ac0f528ffe05867d33150c54f46f">g2o::Solver::buildStructure</a></div><div class="ttdeci">virtual bool buildStructure(bool zeroBlocks=false)=0</div><div class="ttdoc">build the structure of the system </div></div>
<div class="ttc" id="classg2o_1_1_solver_html_afc33768e6c024e11d9e3c9d938b59b7f"><div class="ttname"><a href="classg2o_1_1_solver.html#afc33768e6c024e11d9e3c9d938b59b7f">g2o::Solver::computeMarginals</a></div><div class="ttdeci">virtual bool computeMarginals(SparseBlockMatrix&lt; MatrixXd &gt; &amp;spinv, const std::vector&lt; std::pair&lt; int, int &gt; &gt; &amp;blockIndices)=0</div><div class="ttdoc">computes the block diagonal elements of the pattern specified in the input and stores them in given S...</div></div>
<div class="ttc" id="classg2o_1_1_solver_html_ab472c69fa089382242a75be76e8f883e"><div class="ttname"><a href="classg2o_1_1_solver.html#ab472c69fa089382242a75be76e8f883e">g2o::Solver::levenberg</a></div><div class="ttdeci">bool levenberg() const</div><div class="ttdoc">the system is Levenberg-Marquardt </div><div class="ttdef"><b>Definition:</b> solver.h:109</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_08235c883c2d11e586a63e6645937db5.html">Thirdparty</a></li><li class="navelem"><a class="el" href="dir_6238d635334f7e809f450ee18181fd21.html">g2o</a></li><li class="navelem"><a class="el" href="dir_62a53d30c17c36057e41412a1a4f77b8.html">g2o</a></li><li class="navelem"><a class="el" href="dir_b7aaf3f9367a0f07449e9b09401b4637.html">core</a></li><li class="navelem"><a class="el" href="solver_8h.html">solver.h</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.12 </li>
  </ul>
</div>
</body>
</html>
